//Student.h  学生、小车各组件信息的 类的声明 及定义；

#ifndef STUDENT_H
#define STUDENT_H
using namespace std;








// struct Student{
//     string id;
//     string name;

// };学生
class Student{
private:
    string m_id;
    string m_name;
public:
    void setid(string id);
    void setname(string name);
    void print();//实现学生信息的屏幕输出
    void save();//实现学生信息的本地文件保存
    string getid();
    string getname();
};
void Student::setid(string id)
{
    m_id=id;
}
void Student::setname(string name)
{
    m_name=name;
}
void Student::print()
{
    
    cout<<"学生id："<<m_id<<"学生姓名："<<m_name<<endl;
}
void Student::save()
{
    ofstream fout("student.txt",ios::app);
    fout<<m_id<<" "<<m_name<<endl;
    fout.close();
}
string Student::getid()
{
    return m_id;
}
string Student::getname()
{
    return m_name;
}







// struct SmartCar {
//     // 小车编号：cqusn打头的16位数字+字母
//     string carid;
//     // 底盘编号：dp打头的8位数字+字母
//     string panid;
// };智能小车
class SmartCar{
private:
    string m_carid;// 小车编号：cqusn打头的16位数字+字母
    string m_panid;// 底盘编号：dp打头的8位数字+字母
public:
    void setID(string carid, string panid);
    void print();//实现智能小车信息的屏幕输出
    void save();//实现智能小车信息的本地文件保存
    string getcarid();
    string getpanid();
};
void SmartCar::setID(string carid, string panid)
{
    m_carid=(carid);
    m_panid=(panid);
}
void SmartCar::save(){
    ofstream fout("dynamicInformation_of_id.txt",ios::app);
    fout<<m_carid<<" "<<m_panid<<endl;
    fout.close();
}
void SmartCar::print(){
    // cout<<"###################################小车信息分割线##########################################"<<endl;
    cout<<"小车编号："<<m_carid<<"，底盘编号："<<m_panid<<endl;
    // ifstream infile;//接下来展示静态信息，这个函数需要在所有静态信息存储完后再调用
    // infile.open("staticInformation_of_car.txt", ios::in);
    // char buf[1024];
    // while (infile.getline(buf,sizeof(buf)))
    // {
    //     cout << buf << endl;
    // }
}
string SmartCar::getcarid()
{
    return m_carid;
}
string SmartCar::getpanid()
{
    return m_panid;
}



class BindCS{
public:
    Student student;
    SmartCar smartCar;
};// 绑定








// struct Underpan {
    
//     // 型号
//     string model;
//     // 轴距
//     string wheelBase;
//     // 轮距
//     string AxleTrack;
//     // 最小离地间隙
//     string groundClearance;
//     // 最小转弯半径
//     string minimumBendingRadius;
//     // 驱动形式
//     string driveForm;
//     // 最大行程
//     string batteryLife;
//     // 轮胎型号
//     string tireModel;
//     // 轮胎尺寸
//     string tireSize;
// };底盘+轮胎
class Underpan{
private:
    string m_model;// 型号
    string m_wheelBase;// 轴距
    string m_AxleTrack;// 轮距
    string m_groundClearance;// 最小离地间隙
    string m_minimumBendingRadius;// 最小转弯半径
    string m_driveForm;// 驱动形式
    string m_batteryLife;// 最大行程
    string m_tireModel;// 轮胎型号
    string m_tireSize;// 轮胎尺寸
public:
    void setmodel(string model);
    void setwheelBase(string wheelBase);
    void setAxleTrack(string AxleTrack);
    void setgroundClearance(string groundClearance);
    void setminimumBendingRadius(string minimumBendingRadius);
    void setdriveForm(string driveForm);
    void setbatteryLife(string batteryLife);
    void settireModel(string tireModel);
    void settireSize(string tireSize);
    void print();//实现底盘+轮胎 信息的屏幕输出
    void save();//实现底盘+轮胎 信息的本地文件保存
};
void Underpan::setmodel(string model)
{
    m_model=(model);
}
void Underpan::setwheelBase(string wheelBase)
{
    m_wheelBase=(wheelBase);
}
void Underpan::setAxleTrack(string AxleTrack)
{
    m_AxleTrack=(AxleTrack);
}
void Underpan::setgroundClearance(string groundClearance)
{
    m_groundClearance=(groundClearance);
}
void Underpan::setminimumBendingRadius(string minimumBendingRadius)
{
    m_minimumBendingRadius=(minimumBendingRadius);
}
void Underpan::setdriveForm(string driveForm)
{
    m_driveForm=(driveForm);
}
void Underpan::setbatteryLife(string batteryLife)
{
    m_batteryLife=(batteryLife);
}
void Underpan::settireModel(string tireModel)
{
    m_tireModel=(tireModel);
}
void Underpan::settireSize(string tireSize)
{
    m_tireSize=(tireSize);
}
void Underpan::save()
{
    ofstream fout("staticInformation_of_car.txt",ios::app);
    fout<<"-----------------底盘+轮胎信息如下--------------------"<<endl
        <<"型号："<<m_model<<endl
        <<"轴距："<<m_wheelBase<<endl
        <<"轮距："<<m_AxleTrack<<endl
        <<"最小离地间隙："<<m_groundClearance<<endl
        <<"最小转弯半径："<<m_minimumBendingRadius<<endl
        <<"驱动形式："<<m_driveForm<<endl
        <<"最大行程："<<m_batteryLife<<endl
        <<"轮胎型号："<<m_tireModel<<endl
        <<"轮胎尺寸："<<m_tireSize<<endl;
    fout.close();
}
void Underpan::print()
{
    cout<<"-----------------底盘+轮胎信息如下--------------------"<<endl
        <<"型号："<<m_model<<endl
        <<"轴距："<<m_wheelBase<<endl
        <<"轮距："<<m_AxleTrack<<endl
        <<"最小离地间隙："<<m_groundClearance<<endl
        <<"最小转弯半径："<<m_minimumBendingRadius<<endl
        <<"驱动形式："<<m_driveForm<<endl
        <<"最大行程："<<m_batteryLife<<endl
        <<"轮胎型号："<<m_tireModel<<endl
        <<"轮胎尺寸："<<m_tireSize<<endl;
}







// struct AGXKits {
//     // 型号
//     string model;
//     // AI
//     string AIHashrate;
//     // CUDA核心
//     string CUDACoreNum;
//     // Tensor CORE
//     string tensorCORE;
//     // 显存
//     string memory;
//     // 外存
//     string storage;
// };AGX套件
class AGXKits{
private:
    string m_model;// 型号
    string m_AIHashrate;// AI
    string m_CUDACoreNum;// CUDA核心
    string m_tensorCORE;// Tensor CORE
    string m_memory;// 显存
    string m_storage;// 外存
public:
    void setmodel(string model);
    void setAIHashrate(string AIHashrate);
    void setCUDACoreNum(string CUDACoreNum);
    void settensorCORE(string tensorCORE);
    void setmemory(string memory);
    void setstorage(string storage);
    void print();//实现AGX套件的屏幕输出
    void save();//实现AGX套件的本地文件保存
};
void AGXKits::setmodel(string model)
{
    m_model=(model);
}
void AGXKits::setAIHashrate(string AIHashrate)
{
    m_AIHashrate=(AIHashrate);
}
void AGXKits::setCUDACoreNum(string CUDACoreNum)
{
    m_CUDACoreNum=(CUDACoreNum);
}
void AGXKits::settensorCORE(string tensorCORE)
{
    m_tensorCORE=(tensorCORE);
}
void AGXKits::setmemory(string memory)
{
    m_memory=(memory);
}
void AGXKits::setstorage(string storage)
{
    m_storage=(storage);
}
void AGXKits::save(){
    ofstream fout("staticInformation_of_car.txt",ios::app);
    fout<<"-----------------AGX  信息如下--------------------"<<endl
        <<"型号："<<m_model<<endl
        <<"AI："<<m_AIHashrate<<endl
        <<"CUDA核心："<<m_CUDACoreNum<<endl
        <<"Tensor CORE："<<m_tensorCORE<<endl
        <<"显存："<<m_memory<<endl
        <<"外存："<<m_storage<<endl;
    fout.close();
}
void AGXKits::print(){
    cout<<"-----------------AGX  信息如下--------------------"<<endl
        <<"型号："<<m_model<<endl
        <<"AI："<<m_AIHashrate<<endl
        <<"CUDA核心："<<m_CUDACoreNum<<endl
        <<"Tensor CORE："<<m_tensorCORE<<endl
        <<"显存："<<m_memory<<endl
        <<"外存："<<m_storage<<endl;
}






// struct BinocularCamera {
//     // 型号
//     string model;
//     // 摄像头
//     string camera;
//     // RGB帧分辨率
//     string RGBFrameResolution;
//     // RGB帧率
//     string RGBFramRate;
//     // FOV
//     string FOV;
//     // 深度帧率
//     string frameRateOfDepth;
// };// 双目摄像头
class BinocularCamera{
private:
    string m_model;// 型号
    string m_camera;// 摄像头
    string m_RGBFrameResolution;// RGB帧分辨率
    string m_RGBFramRate;// RGB帧率
    string m_FOV; // FOV
    string m_frameRateOfDepth;// 深度帧率
public:
    void setmodel(string model);
    void setcamera(string camera);
    void setRGBFrameResolution(string RGBFrameResolution);
    void setRGBFramRate(string RGBFramRate);
    void setFOV(string FOV);
    void setframeRateOfDepth(string frameRateOfDepth);
    void print();//实现双目摄像头信息的屏幕输出
    void save();//实现双目摄像头信息的本地文件保存
};
void BinocularCamera::setmodel(string model)
{
    m_model=(model);
}
void BinocularCamera::setcamera(string camera)
{
    m_camera=(camera);
}
void BinocularCamera::setRGBFrameResolution(string RGBFrameResolution)
{
    m_RGBFrameResolution=(RGBFrameResolution);
}
void BinocularCamera::setRGBFramRate(string RGBFramRate)
{
    m_RGBFramRate=(RGBFramRate);
}
void BinocularCamera::setFOV(string FOV)
{
    m_FOV=(FOV);
}
void BinocularCamera::setframeRateOfDepth(string frameRateOfDepth)
{
    m_frameRateOfDepth=(frameRateOfDepth);
}
void BinocularCamera::save(){
    ofstream fout("staticInformation_of_car.txt",ios::app);
    fout<<"-----------------双目摄像头信息如下--------------------"<<endl
        <<"型号："<<m_model<<endl
        <<"摄像头："<<m_camera<<endl
        <<"RGB帧分辨率："<<m_RGBFrameResolution<<endl
        <<"RGB帧率："<<m_RGBFramRate<<endl
        <<"FOV："<<m_FOV<<endl
        <<"深度帧率："<<m_frameRateOfDepth<<endl;
    fout.close();
}
void BinocularCamera::print(){
    cout<<"-----------------双目摄像头信息如下--------------------"<<endl
        <<"型号："<<m_model<<endl
        <<"摄像头："<<m_camera<<endl
        <<"RGB帧分辨率："<<m_RGBFrameResolution<<endl
        <<"RGB帧率："<<m_RGBFramRate<<endl
        <<"FOV："<<m_FOV<<endl
        <<"深度帧率："<<m_frameRateOfDepth<<endl;
}






// struct LiDAR {
//     // 型号
//     string model;
//     // 通道数
//     string channelNumber;
//     // 测试范围
//     string testScope;
//     // 功耗
//     string power;
// };// 多线激光雷达
class LiDAR{
private:
    string m_model;// 型号
    string m_channelNumber;// 通道数
    string m_testScope; // 测试范围
    string m_power;// 功耗
public:
    void setmodel(string model);
    void setchannelNumber(string channelNumber);
    void settestScope(string testScope);
    void setpower(string power);
    void print();//实现多线激光雷达信息的屏幕输出
    void save();//实现多线激光雷达信息的本地文件保存
};
void LiDAR::setmodel(string model)
{
    m_model=(model);
}
void LiDAR::setchannelNumber(string channelNumber)
{
    m_channelNumber=(channelNumber);
}
void LiDAR::settestScope(string testScope)
{
    m_testScope=(testScope);
}
void LiDAR::setpower(string power)
{
    m_power=(power);
}
void LiDAR::save(){
    ofstream fout("staticInformation_of_car.txt",ios::app);
    fout<<"-----------------多线激光雷达信息如下--------------------"<<endl
        <<"型号："<<m_model<<endl
        <<"通道数："<<m_channelNumber<<endl
        <<"测试范围："<<m_testScope<<endl
        <<"功耗："<<m_power<<endl;
    fout.close();
}
void LiDAR::print(){
    cout<<"-----------------多线激光雷达信息如下--------------------"<<endl
        <<"型号："<<m_model<<endl
        <<"通道数："<<m_channelNumber<<endl
        <<"测试范围："<<m_testScope<<endl
        <<"功耗："<<m_power<<endl;
}











// struct Gyroscope {
//     // 型号
//     string model;
//     // 厂家
//     string brand;
// };// 9轴陀螺仪
class Gyroscope{
private:
    string m_model;// 型号
    string m_brand;// 厂家
public:
    void setmodel(string model);
    void setbrand(string brand);
    void print();//实现9轴陀螺仪达信息的屏幕输出
    void save();//实现9轴陀螺仪达信息的本地文件保存
};
void Gyroscope::setmodel(string model)
{
    m_model=model;
}
void Gyroscope::setbrand(string brand)
{
    m_brand=brand;
}
void Gyroscope::save(){
    ofstream fout("staticInformation_of_car.txt",ios::app);
    fout<<"-----------------9轴陀螺仪信息如下--------------------"<<endl
        <<"型号："<<m_model<<endl
        <<"厂家："<<m_brand<<endl;
    fout.close();
}
void Gyroscope::print(){
    cout<<"-----------------9轴陀螺仪信息如下--------------------"<<endl
        <<"型号："<<m_model<<endl
        <<"厂家："<<m_brand<<endl;
}










// struct LCD {
//     // 型号
//     string model;
//     // 尺寸
//     string size;
// };// 液晶显示屏
class LCD{
private:
    string m_model;// 型号
    string m_size; // 尺寸
public:
    void setmodel(string model);
    void setsize(string size);
    void print();//实现液晶显示屏达信息的屏幕输出
    void save();//实现液晶显示屏达信息的本地文件保存
};
void LCD::setmodel(string model)
{
    m_model=(model);
}
void LCD::setsize(string size)
{
    m_size=(size);
}
void LCD::save(){
    ofstream fout("staticInformation_of_car.txt",ios::app);
    fout<<"-----------------LCD  信息如下--------------------"<<endl
        <<"型号："<<m_model<<endl
        <<"尺寸："<<m_size<<endl;
    fout.close();
}
void LCD::print(){
    cout<<"-----------------LCD  信息如下--------------------"<<endl
        <<"型号："<<m_model<<endl
        <<"尺寸："<<m_size<<endl;
}











// struct BatteryModule {
//     // 参数
//     string parameter;
//     // 对外供电
//     string externalPowerSupply;
//     // 充电时间
//     string chargeTime;
// };// 电池模块
class BatteryModule{
private:
    string m_parameter;// 参数
    string m_externalPowerSupply;// 对外供电
    string m_chargeTime;// 充电时间
public:
    void setparameter(string parameter);
    void setexternalPowerSupply( string externalPowerSupply);
    void setchargeTime(string chargeTime);
    void print();//实现电池模块达信息的屏幕输出
    void save();//实现电池模块达信息的本地文件保存
};
void BatteryModule::setparameter(string parameter)
{
    m_parameter=(parameter);
}
void BatteryModule::setexternalPowerSupply( string externalPowerSupply)
{
    m_externalPowerSupply=(externalPowerSupply);
}
void BatteryModule::setchargeTime(string chargeTime)
{
    m_chargeTime=(chargeTime);
}
void BatteryModule::save(){
    ofstream fout("staticInformation_of_car.txt",ios::app);
    fout<<"-----------------电池模块  信息如下--------------------"<<endl
        <<"参数："<<m_parameter<<endl
        <<"对外供电："<<m_externalPowerSupply<<endl
        <<"充电时间："<<m_chargeTime<<endl;
    fout.close();
}
void BatteryModule::print(){
    cout<<"-----------------电池模块  信息如下--------------------"<<endl
        <<"参数："<<m_parameter<<endl
        <<"对外供电："<<m_externalPowerSupply<<endl
        <<"充电时间："<<m_chargeTime<<endl;
}


#endif
